如果Memleak连接不上JVM的话,可能是因为Memleak需要使用一个额外的端口。与其他JRockit Mission Control中的工具一样,Memleak也是通过JMX来完成工作的,因此需要一个运行在JVM内部分的 MLS(MemLeak Server),在启动之后,客户端就不再使用JMX了,而是使用私有协议MLP(Memory Leak Protocol)来进行通信。
MLS是内建于JRockit中的服务器,原本是希望可以在Java堆之外运行MLS,以便在JVM在发生OutOfMemoryError
错误时,可以将JVM挂起,并启动MLS,因此就想在JVM加入一个特殊的标记位。但可惜的是,这点一直没有实现。
在JRockit Mission Control中可以设置MLS所使用的具体端口,如下图所示:
此外,还需要注意的是: